SUBROUTINE CALC_XNORM
!
! Verwendungszweck:
!     Berechnung von Normierungskonstanten fuer den Variablensatz X:
!     Dieser wird fuer 2 Zwecke gebraucht:
!                   - Berechnung von des relativen Maximums von DX
!                   - Berechnung des Maximums der relativen Variation (rmv)
!
!     Fuer diese Normierung kann man ruhig die aktuellen Werte X nehmen,
!     da ja NACH der Loesung des Gleichungssystems.
!
!-----------------------------------------------------------------------
! Interne Variable:
!
!   idx        : Schleifenvariable
!
!-----------------------------------------------------------------------

      use primvar, only : X, MR, MD, MUr, MUp, ME, MJ, MH, Xnorm
      use matvar,  only : Pgas0
      use config,  only : rkind, np
      use physco,  only : grav, offset
      use RBvar,   only : M_star

      implicit none

      integer :: idx



      !$OMP PARALLEL DO PRIVATE (idx)
      do idx = 1,np   ! Schleife ueber alle Zellen

!-----------------------------------------------------------------------
!    MR
!-----------------------------------------------------------------------

         ! Normierung von X mit: aktuellem Radiuswert
         Xnorm(MR,idx) = max( X(MR,idx), offset )

!-----------------------------------------------------------------------
!    MD
!-----------------------------------------------------------------------

         ! Normierung von X mit: Betrag der Dichte
         Xnorm(MD,idx) = X(MD,idx)

!-----------------------------------------------------------------------
!    ME
!-----------------------------------------------------------------------

         ! Normierung von X mit: Betrag der inneren Energie(dichte)
         Xnorm(ME,idx) = X(ME,idx)

!-----------------------------------------------------------------------
!    MUr
!-----------------------------------------------------------------------

         ! Normierung von X mit: Geschwindigkeit oder der Schallgeschwindigkeit
         Xnorm(MUr,idx) = max( abs(X(MUr,idx)), sqrt(Pgas0(idx)/X(MD,idx)), sqrt(grav*M_star/X(MR,idx)), offset )      !debugging bin mit der normierung nicht gluecklich: u_r und c_s sind oft sehr klein, und die Keplergeschwindigkeit ist eigentlich Fehl am Platz

!-----------------------------------------------------------------------
!    MUp
!-----------------------------------------------------------------------

         ! Normierung von X mit: Geschwindigkeit oder der Schallgeschwindigkeit oder der Kepler-Umlaufgeschwindigkeit
         Xnorm(MUp,idx) = max( abs(X(MUp,idx)), sqrt(Pgas0(idx)/X(MD,idx)), sqrt(grav*M_star/X(MR,idx)), offset )

!-----------------------------------------------------------------------
!    MJ
!-----------------------------------------------------------------------

         ! Normierung von X mit: Betrag der Strahlungsenergiedichte
         Xnorm(MJ,idx) = max( X(MJ,idx), offset ) !xxx debugging

!-----------------------------------------------------------------------
!    MH
!-----------------------------------------------------------------------

         ! Normierung von X mit: lokaler strahlungsfluss !xxx oder was ????
         Xnorm(MH,idx) = max( abs(X(MH,idx)), X(MJ,idx)/100._rkind, offset ) !ppp


      end do
      !$OMP END PARALLEL DO



END SUBROUTINE CALC_XNORM
